package org.jetlinks.pro.clickhouse.engine;

import java.util.function.Consumer;

/**
 * ClickHouse引擎构建器
 *
 * @author zhouhao
 * @since 1.10
 */
public interface EngineBuilder {

    /**
     * 处理特定的引擎
     *
     * @param engineType 引擎类型
     * @param consumer   自定义处理函数
     * @param <T>        引擎类型
     * @return this
     */
    <T extends Engine> EngineBuilder when(Class<T> engineType, Consumer<T> consumer);

    /**
     * 构造为新的引擎
     *
     * @return 引擎
     */
    Engine build();
}
